package com.cotasul.tela;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import com.cotasul.bean.CompradorBean;
import com.cotasul.bean.ProdutoBean;
import com.cotasul.bean.UsuarioBean;
import com.cotasul.negocio.ProdutoServico;
import com.cotasul.negocio.interfaces.IServicoGenerico;

@ManagedBean
@ViewScoped
public class ProdutoTela extends TelaAbstrata {

	private ProdutoServico<ProdutoBean> produtoServico;

	private UsuarioBean usuario;
	
	private ProdutoBean produto;
	
	private StreamedContent imagem;
	
	private byte[] foto;

	public ProdutoTela() {
		produtoServico = new ProdutoServico<ProdutoBean>();
		produto = new ProdutoBean();
		usuario = usuario == null ? (UsuarioBean) ((HttpSession) FacesContext
				.getCurrentInstance().getExternalContext()
				.getSession(false)).getAttribute("usuario")
				: usuario;
	}

	public void handleFileUpload(FileUploadEvent event) {
		try {
			imagem = new DefaultStreamedContent(event.getFile()
					.getInputstream());
			foto = event.getFile().getContents();
			this.produto.setImagemProd(foto);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void salvar(){
		FacesMessage msg = null;
		try{
			CompradorBean comprador = new CompradorBean();
			comprador.setUsuario(usuario);
			produto.setImagemProd(foto);
			produto.setComprador(comprador);
			produtoServico.salvar(produto);
			produto = new ProdutoBean();
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, this
					.getServico().getValor("msg_header_sucesso"), this
					.getServico().getValor("msg_sucesso_registro_inclusao"));
		}catch(Exception e){
			e.printStackTrace();
			msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, this
					.getServico().getValor("msg_header_erro"), this
					.getServico().getValor("msg_erro_inserir"));
		}
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}

	@SuppressWarnings("rawtypes")
	@Override
	protected IServicoGenerico getServico() {
		return this.produtoServico;
	}

	public ProdutoServico<ProdutoBean> getProdutoServico() {
		return produtoServico;
	}

	public void setProdutoServico(ProdutoServico<ProdutoBean> produtoServico) {
		this.produtoServico = produtoServico;
	}

	public ProdutoBean getProduto() {
		return produto;
	}

	public void setProduto(ProdutoBean produto) {
		this.produto = produto;
	}

	public StreamedContent getImagem() {
		return imagem;
	}

	public void setImagem(StreamedContent imagem) {
		this.imagem = imagem;
	}
	
	public byte[] getFoto() {
		return foto;
	}
	
	public void setFoto(byte[] foto) {
		this.foto = foto;
	}
	
	

}
